package com.ds.infrastructure.audit.client.annotation;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;


/**
 * 作用：
 *
 * @author WeiShaoying
 * @date 2020/7/27
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
@Constraint(validatedBy = {AuditValidator.class})
public @interface KbaAudit {

    /**
     * 组织ID
     *
     * @return
     */
    String groupId() default "";

    /**
     * 门店ID
     *
     * @return
     */
    String shopId() default "";

    /**
     * 业务名称
     *
     * @return
     */
    String bizName();

    /**
     * 业务数据的唯一标识，可选，建议不为空
     *
     * @return
     */
    String behaviorId();


    // 行为
    String action();

    // 行为详情
    String actionDetail() default "";

    /**
     * 重要级别，越小越重要
     *
     * @return
     */
    int priority() default 10;

    /**
     * 当前用户Id
     *
     * @return
     */
    String userId();

    /**
     * 扩展信息json
     *
     * @return
     */
    String extra() default "";


    /**
     * 提示信息
     *
     * @return
     */
    String message() default "格式错误";

    /**
     * 分组
     *
     * @return
     */
    Class<?>[] groups() default {};

    /**
     * 载荷
     *
     * @return
     */
    Class<? extends Payload>[] payload() default {};

}
